#include "ClaveInt.h"

ClaveInt::ClaveInt(int valor) {

	this->valorInt = valor;
}

ClaveInt::~ClaveInt() {

}

ClaveInt::ClaveInt(Bytes clave) {
	this->hidratarse(clave);
}

bool ClaveInt::operator==(const DatoClave& otro) const {

	const ClaveInt *clave = dynamic_cast<const ClaveInt*>(&otro);

	if (clave == NULL) {
		return false;
	}

	return (this->valorInt == clave->valorInt);
}

bool ClaveInt::operator<(const DatoClave& otro) const {

	const ClaveInt *clave = dynamic_cast<const ClaveInt*>(&otro);

	if (clave == NULL) {
		return false;
	}

	return (this->valorInt < clave->valorInt);
}

bool ClaveInt::operator>(const DatoClave& otro) const {

	const ClaveInt *clave = dynamic_cast<const ClaveInt*>(&otro);

	if (clave == NULL) {
		return false;
	}

	return (this->valorInt > clave->valorInt);
}

bool ClaveInt::operator<=(const DatoClave& otro) const {

	const ClaveInt *clave = dynamic_cast<const ClaveInt*>(&otro);

	if (clave == NULL) {
		return false;
	}

	return (this->valorInt <= clave->valorInt);
}

Bytes ClaveInt::serializarse() {

	Bytes claveSerializada;
	claveSerializada.agregar(&this->valorInt,sizeof(this->valorInt),0);

	return claveSerializada;
}

bool ClaveInt::hidratarse(const Bytes& dato) {

	return dato.leer(&this->valorInt,0,sizeof(this->valorInt));
}

std::string ClaveInt::toString()const{
	std::stringstream o;
	o<<valorInt;
	return o.str();
}

DatoClave* ClaveInt::getCopia() {
	return new ClaveInt(this->valorInt);
}
